package com.shujia.five;

import org.junit.Test;

import java.util.Scanner;

public class SwitchDemo1 {

    @Test
    public void exer3() {
        for(;;) {
            System.out.println(111);
        }
    }

    //对学生成绩大于等于60分的，输出“及格”。低于60分的，输出“不及格”。
    // 可以利用 case穿透, 让多个case共享同一段代码块
    @Test
    public void exer2() {
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();

        // 如果使用default的形式, 前面要加一个参数校验
        // ....



        score = score / 10; // 0 - 10
        switch (score) {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("不及格");
                break;
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
                System.out.println("及格");
                break;
//            default: // 可以代替前面的 0 - 5 的case代码
//                System.out.println("不及格");

        }

    }


    // 使用 switch 把小写类型的 char型转为大写。只转换 a, b, c. 其它的输出 “other”。
    @Test
    public void exer1() {
        char c = 'z';
        String result;
        switch (c) {
            case 'a':
                result = "A";
                break;
            case 'b':
                result = "B";
                break;
            case 'c':
                result = "C";
                break;
            default:
                result = "other";
                break;
        }
        System.out.println(result);
    }

    @Test
    public void test2() {
        String str = "你好";
        switch (str) {
            case "你":// 常量要使用字符串
                System.out.println("你");
                break;
            case "好":
                System.out.println("好");
                break;
            default:
                System.out.println("你好");
        }
    }

    @Test
    public void test1() {
        // switch 语法
        // switch(表达式)中表达式的值必须是下述几种类型之一：
        // byte、short、char、int、枚举 (jdk 5.0)、String (jdk 7.0) ;
        // boolean 和 long  double类型是不能在switch里面使用
        int num = 20;
        // boolean num = false; // 错
        // double num = 20;
//        switch (10 + 20)
        /*
        break 语句用来在执行完一个case分支后使程序跳出switch语句块；
        如果没有break，程序会顺序执行到switch结尾,
        在后面遇到了break, 也是可以跳出switch语句块的。（case穿透）
         */
        switch (num) {
            // case子句中的值必须是常量，不能是变量名或不确定的表达式值
            // case是可以定义多个,相当于if语句里面else if的意思
            // 同一个switch语句，所有case子句中的常量值不能相同
            case 10:
                // 代码块
                System.out.println("代码块1");
                System.out.println("代码块1_1");
                break;
            case 20:
                System.out.println("代码块2");
                System.out.println("代码块2_1");
                break;
            default: // 相当于if语句里面else
                // default子句是可任选的，放在末尾。当没有匹配的case时，执行default
                System.out.println("代码块3");
                System.out.println("代码块3_1");
                break; // 加不加没有区别, 本来就没有代码执行了
        }

        System.out.println("swtich 后面的逻辑");


    }
}
